package contract

type Router interface {
	Group(path string) GroupRouter
	Get(url string, action interface{}) Router
	Post(url string, action interface{}) Router
	Put(url string, action interface{}) Router
	Delete(url string, action interface{}) Router
	Use(middle ...interface{}) Router
	Start() error
}

type Route interface {
	Method() string
	Url() string
	Action() interface{}
}
type GroupRouter interface {
	Group(path string) GroupRouter
	Get(url string, action interface{}) GroupRouter
	Post(url string, action interface{}) GroupRouter
	Put(url string, action interface{}) GroupRouter
	Delete(url string, action interface{}) GroupRouter
	Use(middle ...interface{}) GroupRouter
	Routes() []Route
	Groups() []GroupRouter
}
